import { PostsService, PostsRo, UpdatePostsType } from './posts.service';
import { Body, Controller, Delete, Get, Param, Post, Put, Query } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
@ApiTags("文章API")
@Controller('post')
export class PostsController {
    constructor(private readonly postsService:PostsService){}

    /**
     * 创建文章
     * @param post
     */
    @Post()
    async create(@Body() post){
        return await this.postsService.create(post)
    }

    /**
     * 获取所有文章
     */
    @Get("list")
    async findAll(@Query() query):Promise<PostsRo>{
        return await this.postsService.findAll(query)
    }

     /**
      *  按照条件查询
      */
     @Post("search")
     async findAndCount(@Body() data):Promise<any>{
      let key =Object.keys(data)
       return await this.postsService.findAndCount(key)
     }
  

    /**
     * 获取指定文章  动态路由
     * @param id 
     */
    @Get(':id')
    async findById(@Param('id') id) {
        return await this.postsService.findById(id)
    }

    /**
     * 更新文章
     * @param id 
     * @param post 
     */
    @Put(":id")
    async update(@Param("id") id, @Body() post):Promise<UpdatePostsType>{
       const res =await this.postsService.updateById(id, post)
        return  {
            statusCode:200,
            data:res,
            msg:'修改成功' 
        }
    }
    
    /**
     * 删除
     * @param id 
     */
    @Delete("delete/:id")
    //  接收参数动态的拼接参数 是@Param('id')
    async remove(@Param('id') id) {
        return await this.postsService.remove(id)
    }
}
